
// 先导入文件系统API
const fs = require("fs")
// 得到文件与目录的信息：stat
// 创建一个目录：mkdir
// 创建文件并写入内容：writeFile,appendFile
// 读取文件的内容：readFile
// 列出目录的东西：readdir
// 重命名目录或文件：rename
// 删除目录与文件：rmdir,unlink










// 得到文件与目录的信息：stat
// fs.stat(path[, options], callback) 

// fs.stat 异步
// fs.statSync 同步 没有回调

// fs.stat(path[, options], callback) 
// fs.statSync(path[, options])  
// path 路径
// [, options]  参数 但是这个参数可以为空 
// callback 回调


// 异步写法
// fs.stat('./events.js',(err,stats)=>{
//     if(err){
//         console,log(err)
//         throw err
//     }
//     console.log(stats.isFile()?'这是一个文件':'这是一个目录')
// })

// // 同步写法
// const stats = fs.statSync("logs");
// console.log(stats.isFile()?'这是一个文件':'这是一个目录')








// 创建一个目录：mkdir
// fs.mkdir(path[, options], callback)

// fs.mkdir('demo',(err)=>{
//     try{
//         console.log("文件目录创建成功")
//     }catch(err){
//         console.log(err)
//         throw err
//     }
// })







// 创建文件并写入内容：writeFile,appendFile
// fs.writeFile(file, data[, options], callback)

// file:要创建写入或者直接写入的文件
// data 写入的内容

// 重新执行如果改变写入内容会直接覆盖而不是添加
// fs.writeFile('logs/log.txt','胡桃 嘿嘿 我的胡桃','utf8',(err)=>{
//     if(err) throw err;
//     console.log("文件创建并写入成功")
// })

// // fs.appendFile 重新执行会添加内容不是覆盖与writeFile相反 
// //在要写入的内容前加入\n 可以换行添加
// for(var i=0;i<100;i++){
//     fs.appendFile('logs/hello.log','\n 胡桃嘿嘿 我的胡桃! '+ i,'utf8',(err)=>{
//         if(err) throw err;
//         console.log("文件创建并写入成功")
//     })
// }







// 读取文件的内容：readFile
// fs.readFile(path[, options], callback)
// fs.readFile('logs/hello.log','utf8',(err,data)=>{
//     if(err) throw err;
//     console.log(data)
// })

// const files =fs.readFileSync('logs/hello.log','utf8')
// console.log(files)





// 列出目录的东西：readdir
// fs.readdir(path[, options], callback)
// fs.readdir('logs','utf8',(err,files)=>{
//     if(err) throw err
//     console.log(files)
// })

// const files = fs.readdirSync('../day2')
// console.log(files)






// // 重命名目录或文件：rename
// fs.rename('demos','twodemos',(err)=>{
//     if(err) throw err
//     console.log("重命名成功")
// })









// 删除目录与文件：rmdir,unlink
// 删文件很简单
// 删目录必须保证目录下没有任何文件即是一个空目录

// fs.readdir('logs',(err,files)=>{
//     if(err) throw err;
//     console.log(files)
//     files.forEach((item,index)=>{
//         fs.unlink('logs/'+item,(err)=>{
//             if(err) throw err;
//             console.log('文件删除成功');
//             //判断logs是否为空 删除文件夹
//             if(index==files.length-1){
//                 fs.rmdir('logs',err=>{
//                     if(err) throw err;
//                     console.log("文件夹删除成功!")
//                 })
//             }
//         })
//     })
// })

delFile('logs')
function delFile(filename){
    fs.readdir(filename,(err)=>{
        if(err) throw err;
        files.forEach((item,index)=>{
            const stats = fs.statSync(filename+"/"+item)
            if(stats.isFile()){
                fs.unlink(filename+"/"+item,err=>{
                    if(err) throw err;
                    console.log(filename+"/"+item+"已经删除了")
                    //判断文件夹是否为空 删除文件夹
                    if(index==files.length-1){
                    fs.rmdir(filename,err=>{
                    if(err) throw err;
                    console.log("文件夹删除成功!")
                })
            }else{
                delFile(files)
            }
                })
            }else{
                delFile(filename+"/"+item)
            }
        })
    })
}